package com.ruoyi.dj.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.vo.DensVO;
import com.ruoyi.common.exception.ProcessStopException;
import com.ruoyi.dj.domain.GlobalDensitySimulateFutureParam;
import com.ruoyi.dj.domain.GlobalDensitySimulateNewParam;
import com.ruoyi.dj.domain.GlobalDensitySimulateParam;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

import java.util.Date;
import java.util.List;


public interface AtmDensityCalculationService {

    AjaxResult getGlobalTatestTime();

    AjaxResult getGlobalHistData(GlobalDensitySimulateParam param) throws ProcessStopException;

    AjaxResult getOrbitSimulateHist(String satName, String startTime, String endTime, String element, String model, Integer interval, String resolution, String sseId) throws ProcessStopException;

    AjaxResult addGlobalHistData(GlobalDensitySimulateNewParam param);

    AjaxResult getDensityProfile(String time, String startAlt, String endAlt, Integer interval, Double lon, Double lat, String model);

    SseEmitter push(String id, String flag);

    AjaxResult getModelList(String startAlt, String endAlt, String startTime,String endTime);

    AjaxResult getTimeRange(String satName);

    AjaxResult getProfileTimeRange();

    AjaxResult getModelBySatellite(String startTime, String endTime, String satName);

    AjaxResult slideAvg(List<String> pathList);

    /**
     * 未来时期模拟计算
     *
     * @param param
     * @return
     */
    List<DensVO> futureCal(GlobalDensitySimulateFutureParam param) throws ProcessStopException;

    AjaxResult getGlobalHistDataNew(GlobalDensitySimulateNewParam param) throws ProcessStopException;

    /**
     * 大气密度全球分布模拟 获取数据时间
     * 观测时间+81  --   未来时间-81天
     * @return
     */
    List<Date> densTimeRange(String type);

    /**
     * 大气密度廓线 获取数据时间
     * 观测时间+81  --   未来时间-81天
     * @return
     */
    List<Date> outTimeRange();
}
